AWS EC2にJava 17とPostgreSQL 15を導入してみた
0. 前提・目標
今回は、前回作成したAWSのEC2インスタンスにJava 17とPostgreSQL 15を導入します。
Spring Bootで作成したJARファイルをEC2に配置して動かすための環境構築が目的です。
OSはAmazon Linux 2023を使用します。
1. Java 17とPostgreSQL 15をインストール
EC2にSSH接続し、下記のコマンドを実行します。
今回は、前回作成したAWSのEC2インスタンスにJava 17とPostgreSQL 15を導入します。
Spring Bootで作成したJARファイルをEC2に配置して動かすための環境構築が目的です。
OSはAmazon Linux 2023を使用します。
EC2にSSH接続し、下記のコマンドを実行します。
今回は、AWSのEC2を使用して仮想サーバーを作成する手順を紹介します。
前回まではテラフォームで構築していましたが、AWSの勉強のために敢えてGUIで設定します。
まず、AWSマネジメントコンソールにログインします。
画面右上のリージョンを「アジアパシフィック(東京)」に設定します。
続いて、サービス検索から「EC2」を選択します。
Terraformを使ってAWSのVPCとサブネットを作成し、削除まで一連の流れを試してみましたので、やり方を後から追えるように記事として残します。
今回の操作では、AWSとTerraformを使用します。 環境設定方法は前回記事を参照してください。
main.tfには、AWS ProviderとVPC、サブネットを定義しました。
Terraformを使ってAWSのS3バケットを作成し、設定変更から削除まで一連の流れを試してみましたので、やり方を後から追えるようにコマンドなどを記事として残します。
今回の操作では、TerraformとAWS CLIを使用します。
事前にそれぞれインストールしておきます。
最近、マイクロサービスという言葉をよく見かけます。
マイクロサービスとは、従来だと単一でシステム化していた業務を区分ごとに小さなサービスに分割する考え方の枠組みです。
社内システムのアーキテクチャに組み込んで再設計してみても面白いと思ったので調べてみました。
従来型の複数機能を単一アプリケーションにまとめた構成を『モノリス』と呼びます。
例えば、ファイルを共有するシステムがあるとします。
このシステムには下記のような機能があります。
従来通り、AWS構築作業を手順書通りに手打ち…だと面倒なのとミスが出るリスクがある為、これを自動化したい。
IaCと呼ばれる手法があり、その中でも代表的なツールにテラフォームがある。このテラフォームはAWSのみではなく、他環境でも流用可能なため今回軽く触れてみた。
よくあるコマンド手打ちを自動化する.shという拡張子があるが、これと合わせて.tfなどのテラフォーム用の拡張子がある。
とりあえず何者なのかを整理してみた。
前回では、.installファイルを使用してテーブルを作成する方法について確認しました。
今回は最終回として、カスタムモジュールの処理をPHPUnitテストというもので試験してみます。
PHPUnitテストを使えば、単体試験をソースコード化することで自動化および再試験の簡略化が出来ます。
Drupalだと固有のUnitTestCaseを継承してテストクラスを作成できます。
final class Issue5MailTest extends UnitTestCase {
今回は、イベントの出欠回答時に通知送信するメールを例にします。
前回では、フォームから入力された内容をDBに保存するところまで追いました。
その際に保存先のテーブルは作成済みとしていましたが、今回はそのテーブルをDrupalでどのように作成しているかを確認していきます。
今回作成するのは.installファイルになります。
まず.installってなんなのかですが、Drupalのカスタムモジュールでインストールや更新時の処理を書くためのDrupal固有のファイルです。
拡張子は.installですが、中身はPHPで書きます。
PHP自体に.installという仕組みがあるわけではなく、Drupal側がこのファイルをPHPとして読み込んでいます。
前回でフォームを作成しました。しかし、入力内容がどのような流れでDBに保存されていくかを追えてなかったので、今回はそれを追って行こうかと思います。
前提として、フォームと保存先のテーブルは作成済みとします。テーブルの作成方法については次回の記事で取り扱います。※.install使用
前回にシステムの入り口として用意したフォームから出欠するしないというデータが送られてきます。もちろん各ユーザが入力します。
仮に出席しますといったデータが流れてきた場合は、出席扱いで名前などとセットでINSERTされます。
先ずフォームってなんなのかですが、具体的には下記のようなテキストを入力・選択して送信するための画面部品のことを指す用語です。
PHPにフォーム定義をしていきます。
Drupalでフォームを定義する際にはHTMLではなく、PHPの配列で定義します。理由はDrupalのForm APIで纏めて管理しており、HTML部分については既にコアとして定義済みだからです。